// // Copyright (c) 2011 All Right Reserved // // vl // // 2011-01-01 using System.Globalization; using System.Runtime.InteropServices; using JetBrains.Annotations; namespace LargoCommon.Midi { /// /// Initializes a new instance of the MidiDevice class. /// public sealed class MidiDeviceItem { /// /// Initializes a new instance of the MidiDeviceItem class. /// /// Device Id. public MidiDeviceItem(int deviceId) { var moc = new MidiOutcaps(0, 0, 0, string.Empty, 0, 0, 0, 0, 0); MidiInternalDevices.GetDeviceCaps(deviceId, ref moc, Marshal.SizeOf(moc)); this.MidiOutcaps = moc; } #region Public properties /// /// Gets Device Name. /// /// General musical property. public string Name => this.MidiOutcaps.ProductName; /// /// Gets Device Driver. /// /// General musical property. [UsedImplicitly] public string Driver => string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.MidiOutcaps.Technology, this.MidiOutcaps.DriverVersion); /* MidiOutcaps - Channels ?! /// /// Gets Device Channels. /// /// General musical property. public string Channels => this.MidiOutcaps.ChannelMask.ToString(CultureInfo.InvariantCulture); */ /// /// Gets Device Notes. /// /// General musical property. public string Notes => this.MidiOutcaps.Notes.ToString(CultureInfo.InvariantCulture); /// /// Gets Device Voices. /// /// General musical property. public string Voices => this.MidiOutcaps.Voices.ToString(CultureInfo.InvariantCulture); /// /// Gets Device functions. /// /// General musical property. public string Functions => string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}", this.MidiOutcaps.ManufacturerIdentifier, this.MidiOutcaps.ProductIdentifier, this.MidiOutcaps.Support); #endregion #region Private properties /// /// Gets Midi Out capabilities. /// /// General musical property. private MidiOutcaps MidiOutcaps { get; } #endregion } }